package com.css.fxfzfxqh.modules.buildings.calculationTasks.repository;

import com.css.fxfzfxqh.modules.buildingIndividual.entity.BuildingIndividualEntity;
import com.css.fxfzfxqh.modules.buildings.calculationTasks.entity.CalculationTasks;
import com.css.fxfzfxqh.modules.buildings.calculationTasks.entity.FxqhBuildingPriceTaskEntity;
import com.css.fxfzfxqh.modules.buildings.calculationTasks.entity.FxqhHosPeoTaskEntity;
import com.css.fxfzfxqh.modules.buildings.calculationTasks.entity.YSXMainTable;
import com.css.fxfzfxqh.modules.buildings.definitiveEvaluation.casualtiesDE.entity.PCC;
import com.css.fxfzfxqh.modules.buildings.definitiveEvaluation.casualtiesDE.vo.Grid13VO;
import com.css.fxfzfxqh.modules.seismicHazardData.entity.SettingInfluenceFliedEntity;

import java.util.List;
import java.util.Map;

public interface CalculationTasksRepository {
    void addTask(CalculationTasks param);

    void saveHouseDataMonomer(List<BuildingIndividualEntity> all);

    void copyData(List<Grid13VO> gridDataList);

    CalculationTasks findById(String tasksId);

    List<Grid13VO> getLdDate(String id,String seismicInputMode,String dictionary);

    List<Grid13VO> getLdDate(String id, String seismicInputMode, String dictionary, String province, String city, String area,String influencefliedId);
    List<Grid13VO> getGlGwDate(String id,String dictionary);

    CalculationTasks getTasks(String userID);

    void cancelTasks(String userID);

    void settingTasks(String id);

    List<Grid13VO> getYXCDate(String id, String seismicInputMode, String structureType, String condition);

    List<BuildingIndividualEntity> getLdDtDate(String id, String seismicInputMode);
    List<BuildingIndividualEntity> getMonomerDate(String id);

    Map<String, Object> getPage(int curPage, int pageSize, CalculationTasks param,String createUserLevel);

    void deleteCalculation(String id);

    void deleteDataCopy(String id);

    void deleteById(String id);

    void saveFxqhBuildingPriceTask(FxqhBuildingPriceTaskEntity entity);
    void saveFxqhHosPeoTask(FxqhHosPeoTaskEntity entity);

    void delFxqhBuildingPriceTask(String taskId);
    void delFxqhHosPeoTask(String taskId);

    List<FxqhBuildingPriceTaskEntity> getList1ByTaskId(String taskId);
    List<FxqhHosPeoTaskEntity> getList2ByTaskId(String taskId);

    void updateById(CalculationTasks entity);


    List<YSXMainTable> getfxqhJzwysx(PCC pcc, String ysxVersion);

    void copyYSXData(YSXMainTable ysxMainTable);

    List<YSXMainTable> getYSXByTaskId(String id);

    void deleteYSXData(YSXMainTable ysxMainTable);

    List<YSXMainTable> getysxValue(String id);

    void copyYSXValue(YSXMainTable mainTable);

    /**计算进度**/
    /**
     * 发生概率计算完成
     * @param id 任务id
     * @param type 单指标区划,综合指标区划,评估
     * @param obj 结构破坏,人员伤亡,经济损失 综合指标区划为空
     */
    void updateFSProgress(String id,String type,String obj);
    //超越概率计算完成
    void updateCYProgress(String id,String type,String obj);
    //烈度计算完成
    void updateLdProgress(String id,String type,String obj);
    //四个概率计算完成
    void updateFourProbabilisticProgress(String id,String type,String obj);
    //地震影响场计算完成
    void updateStructuralFieldProgress(String id,String type,String obj);

    //校验坐标是不是一个面
    boolean verification(String areaRange);

    List<String> getAllTask(String provinceId);
}
